// 引入request请求函数
import { request } from '../../request/request'
import { showToast } from '../../utils/wxAsync'

Page({

  /**
   * 页面的初始数据
   */
  data: {
    commentsList: [], // 评论列表
    typeId: 0,
    valueId: 0,
    showType: 0, // 展示类型：全部：0/有图：1
    allCount: 0, //所有评论数量
    hasPicCount: 0, // 有图评论数量
    page: 1, //当前页码
    size: 20, // 每页显示评论条数,
    totalPages: 0 // 评论总条数
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad: function (options) {
    // 页面初始化 options为页面跳转所带来的参数
    let { typeId, valueId } = options
    this.setData({
      typeId: typeId - 0,
      valueId: valueId - 0
    });
    this.getCommentCount()
    this.getCommentList()
  },
  // 获取评论数量
  async getCommentCount() {
    let { typeId, valueId } = this.data
    const res = await request({url: '/comment/count', data: { typeId, valueId }})
    this.setData({
      allCount: res.data.allCount,
      hasPicCount: res.data.hasPicCount
    })
  },
  // 获取评论列表
  async getCommentList() {
    let { typeId, valueId, page, size, showType, commentsList } = this.data
    // 准备参数
    let params = {
      typeId,
      valueId,
      size,
      showType,
      page
    }
    const res = await request({url: '/comment/list', data: params})
    console.log(res)
    this.setData({
      // 拼接评论数组
      commentsList: [...commentsList, ...res.data.data],
      page: res.data.currentPage,
      size: res.data.pageSize,
      totalPages: res.data.totalPages
    })
  },
  // 监听点击tabs标签事件
  switchTab(e) {
    // 获取自定义属性，判断点击的是全部还是有图
    const { params } = e.currentTarget.dataset
    let showType = this.data.showType
    if (params === 'all') {
      showType = 0
    } else {
      showType = 1
    }
    this.setData({
      showType,
      commentsList: []
    })
    this.getCommentList()
  },
  // 页面触底事件
  async onReachBottom() {
    let { page, totalPages } = this.data
    // 有下一页数据
    if (page < totalPages) {
      page++
      this.setData({
        page
      })
      this.getCommentList()
    } else {
      await showToast({title: '我是有底线的---', icon: 'none'})
      return
    }
  }
})